<?php
//------------------------------------------------------------ Contraintes d'accès de la page

	// on vérifie que cette page est appelée à partir de l'index et que l'utilisateur a le droit d'ajout
	if(isset($_SESSION) && ($GLOBALS['USER']['level'] >= 3 || $GLOBALS['USER']['admin'])){

		// l'identifiant de la donnée à supprimer est indiqué par un entier
		if(isset($_GET['id']) && numericInt($_GET['id'])){
		
			$nb_sachets = valueExists((int)$_GET['id'], "CODESACHETGRAINE", "sachet_graines", $connexion);
			
			if($nb_sachets == 1){ // le sachet de graines à planter existe et son identifiant est unique
			
				// récupération des informations du sachet de graines
				$query_recuperation_sachet_graines = "SELECT sa.QUANTITEGRAINESDISPONIBLES, nbe.nbEntrees, nbs.nbSorties, en.CODEPRETENTRANT, en.NUMIPEN, sa.CODETAXON, sa.REFERENCESACHETGRAINES ";
				$query_recuperation_sachet_graines .= "FROM sachet_graines sa ";
				$query_recuperation_sachet_graines .= "INNER JOIN (SELECT COUNT(*) AS nbEntrees FROM entree WHERE SAC_CODESACHETGRAINE = ".$_GET['id'].") nbe ";
				$query_recuperation_sachet_graines .= "INNER JOIN (SELECT COUNT(*) AS nbSorties FROM sortie WHERE CODESACHETGRAINE = ".$_GET['id'].") nbs ";
				$query_recuperation_sachet_graines .= "INNER JOIN entree en ON en.SAC_CODESACHETGRAINE = sa.CODESACHETGRAINE AND en.DATEENTREE = (SELECT MIN(DATEENTREE) FROM entree WHERE SAC_CODESACHETGRAINE = ".$_GET['id'].") ";
				$query_recuperation_sachet_graines .= "WHERE sa.CODESACHETGRAINE = ".$_GET['id']." ";
				
				$result_recuperation_sachet_graines = mysql_query($query_recuperation_sachet_graines, $connexion) or logError("RECUPERATION SACHET GRAINES-".$query_recuperation_sachet_graines."-".mysql_error());
	
				$tab_recuperation_sachet_graines = mysql_fetch_row($result_recuperation_sachet_graines);
	
				if($tab_recuperation_sachet_graines[0] > 0 || is_null($tab_recuperation_sachet_graines[0])){ // Le sachet n'est pas vide
				
					if($tab_recuperation_sachet_graines[1] > $tab_recuperation_sachet_graines[2]){ // Le sachet a plus d'entrée que de sorties
					
						if(is_null($tab_recuperation_sachet_graines[3])){ // Le sachet n'est pas issu d'un prêt
						
						$quantiteSachet = $tab_recuperation_sachet_graines[0];
						$ipenSachet = $tab_recuperation_sachet_graines[4];
						$taxonSachet = $tab_recuperation_sachet_graines[5];
	
?>
<?php
//------------------------------------------------------------ Valeur des champs avant saisie

	$dv_date_jour = date("j"); // valeur du champ jour de la date de plantation (ajt_date_jour)
	$dv_date_mois = date("n"); // valeur du champ mois de la date de plantation (ajt_date_mois)
	$dv_date_annee = date("Y"); // valeur du champ année de la date de plantation (ajt_date_annee)
	$dv_ref = $tab_recuperation_sachet_graines[6]; // valeur du champ numéro d'entrée du semis (ajt_ref)
	$dv_quantite = $quantiteSachet; // valeur du champ quantite de graines dans le semis (ajt_quantite)
	$dv_vide = true; // valeur du champ sachet vide (ajt_vide)
	$dv_numero = (int)(valueMax("NUMENTREE", "entree", $connexion))+1; // valeur du champ identifiant d'entrée (ajt_numero)
	
?>
<?php
//------------------------------------------------------------ Traitements si le formulaire a été envoyé

/********************************* Règles :

	- la référence ne doit pas exister dans la BDD
	- la date de plantation du semis ne peut pas être antérieure à la date de derniere entrée du sachet
	- la quantité de graines plantées dans le semis ne peut pas être supérieure à la quantité de graines restant dans le sachet

*****************************************/

	$statut = array(); // indique le statut du traitement du formulaire (echec ou succes) - tableau contenant les messages à afficher
	$erreur = false; // indique si une erreur a été rencontrée lors du traitement

	trimTabByKey($_POST, "ajt_"); // appel à la fonction trimTabByKey() définie dans fonctions.php
	
	//---------------------------------- Contrôle des données ----------------------------------
	
	if(isset($_POST['form_sent'])){ // si le formulaire est envoyé
	
		// Contrôle des données de l'identifiant d'entrée
		if(isset($_POST['ajt_numero']) && is_string($_POST['ajt_numero'])){
			if(!emptyString($_POST['ajt_numero'])){
				if(numericInt($_POST['ajt_numero'])){
					if(valueExists((int)$_POST['ajt_numero'], "NUMENTREE", "entree", $connexion) > 0){
						$statut[] = "Cet identifiant d'entrée est déjà attribué";
						$erreur = true;
					}else{
						$dv_numero = $_POST['ajt_numero'];
					}
				}else{
					$statut[] = "Format de l'identifiant d'entrée incorrect";
					$erreur = true;
				}
			}else{
				$dv_numero = $_POST['ajt_numero'];
			}
		}else{
			$statut[] = "Aucun identifiant d'entrée indiqué";
			$erreur = true;
		}
	
		// Contrôle des données du numéro d'entrée du semis
		if(isset($_POST['ajt_ref']) && is_string($_POST['ajt_ref'])){
			if(!emptyString($_POST['ajt_ref'])){
				if(valueExists($_POST['ajt_ref'], "REFERENCESEMIS", "semis", $connexion) > 0){
					$statut[] = "Ce numéro d'entrée du semis est déjà attribué";
					$erreur = true;
				}else{
					$dv_ref = $_POST['ajt_ref'];
				}
			}else{
				$dv_ref = $_POST['ajt_ref'];
			}
		}else{
			$statut[] = "Aucun numéro d'entrée du semis indiqué";
			$erreur = true;
		}
		
		// Contrôle des données de la date de plantation du semis
		if(isset($_POST['ajt_date_jour']) && is_string($_POST['ajt_date_jour']) && isset($_POST['ajt_date_mois']) && is_string($_POST['ajt_date_mois']) && isset($_POST['ajt_date_annee']) && is_string($_POST['ajt_date_annee'])){
			if(numericInt($_POST['ajt_date_jour']) && numericInt($_POST['ajt_date_mois']) && !emptyString($_POST['ajt_date_annee']) && numericInt($_POST['ajt_date_annee'])){
				if(checkdate($_POST['ajt_date_mois'], $_POST['ajt_date_jour'], $_POST['ajt_date_annee'])){
					// Récupération de la date de la dernière entrée du sachet de graines
					$query_recuperation_date_derniere_entree_sachet = "SELECT MAX(DATEENTREE) FROM entree WHERE SAC_CODESACHETGRAINE = ".$_GET['id']." ";
					$result_recuperation_date_derniere_entree_sachet = mysql_query($query_recuperation_date_derniere_entree_sachet, $connexion) or logError("RECUPERATION DATE DERNIERE ENTREE SACHET GRAINES-".$query_recuperation_date_derniere_entree_sachet."-".mysql_error());
					$tab_recuperation_date_derniere_entree_sachet = mysql_fetch_row($result_recuperation_date_derniere_entree_sachet);
					mysql_free_result($result_recuperation_date_derniere_entree_sachet);
					$timeEntree = strtotime($_POST['ajt_date_annee']."-".$_POST['ajt_date_mois']."-".$_POST['ajt_date_jour']);
					if($timeEntree >= strtotime($tab_recuperation_date_derniere_entree_sachet[0])){
						if($timeEntree <= time()){
							$dv_date_jour = $_POST['ajt_date_jour'];
							$dv_date_mois = $_POST['ajt_date_mois'];
							$dv_date_annee = $_POST['ajt_date_annee'];
						}else{
							$statut[] = "La date de plantation du semis n'est pas encore passée";
							$erreur = true;
						}
					}else{
						$statut[] = "La date de plantation du semis ne peut pas être antérieure à la dernière date d'entrée du sachet";
						$erreur = true;
					}
				}else{
					$statut[] = "Date de plantation du semis incorrecte";
					$erreur = true;
				}

			}else{
				$statut[] = "Format de la date de plantation du semis incorrect";
				$erreur = true;
			}
		}else{
			$statut[] = "Aucune date de plantation du semis indiquée";
			$erreur = true;
		}
		
		// Contrôle des données de la quantité de graines
		if(isset($_POST['ajt_quantite']) && is_string($_POST['ajt_quantite'])){
			if(!emptyString($_POST['ajt_quantite'])){
				if(numericInt($_POST['ajt_quantite']) && $_POST['ajt_quantite'] > 0){
					if($_POST['ajt_quantite'] <= $quantiteSachet || is_null($quantiteSachet) || emptyString($_POST['ajt_quantite'])){
						$dv_quantite = $_POST['ajt_quantite'];
					}else{
						$statut[] = "La quantité de graines dans le semis ne peut être supérieure à la quantité de graines dans le sachet";
						$erreur = true;
					}
				}else{
					$statut[] = "Format de la quantité de graines plantées incorrect";
					$erreur = true;
				}
			}else{
				$dv_quantite = $_POST['ajt_quantite'];
			}
		}else{
			$statut[] = "Aucune quantité de graines plantées indiquée";
			$erreur = true;
		}
		
		// Contrôle des données de l'indication du sachet vide
		if(isset($_POST['ajt_vide']) && is_string($_POST['ajt_vide'])){
			if($_POST['ajt_vide'] != "oui" && $_POST['ajt_vide'] != "non"){
				$statut[] = "Format de l'indication du contenu du sachet incorrect";
				$erreur = true;
			}else{
				if($_POST['ajt_vide'] == "oui"){
					$dv_vide = true;
				}else if($_POST['ajt_vide'] == "non"){
					$dv_vide = false;
				}
			}
		}else{
			$statut[] = "Aucune indication du contenu du sachet indiquée";
			$erreur = true;
		}
		
		//---------------------------------- Création de la plantation ----------------------------------
	
		if(!$erreur){ // aucune erreur n'a été rencontrée jusqu'ici
			
			if (isset($quantiteSachet)) {
				// Modification des informations dans la table SACHET_GRAINES
				$query_modification_sachet_graines = "UPDATE sachet_graines ";
				if($_POST['ajt_vide'] == "oui"){
					$query_modification_sachet_graines .= "SET QUANTITEGRAINESDISPONIBLES = 0 ";
				}else if(!emptyString($_POST['ajt_quantite'])){
					$query_modification_sachet_graines .= "SET QUANTITEGRAINESDISPONIBLES = ".($quantiteSachet - $_POST['ajt_quantite'])." ";
				}else{
					$query_modification_sachet_graines .= "SET QUANTITEGRAINESDISPONIBLES = ".$quantiteSachet." ";
				}

				$query_modification_sachet_graines .= "WHERE CODESACHETGRAINE = ".$_GET['id']." ";
				
				$result_modification_sachet_graines = mysql_query($query_modification_sachet_graines, $connexion) or logError("MODIFICATION SACHET GRAINES-".$query_modification_sachet_graines."-".mysql_error());
				
				if($result_modification_sachet_graines === false){
					$statut[] = "Erreur critique lors de la modification du sachet de graines";
					$erreur = true;
				}
			}
			
			// Création du semis
			$query_creation_semis = "INSERT INTO semis(CODETAXON, DATESEMIS, QUANTITEGRAINESSEMIS, REFERENCESEMIS) ";
			$query_creation_semis .= "VALUES( ".$taxonSachet." , '".$_POST['ajt_date_annee']."-".$_POST['ajt_date_mois']."-".$_POST['ajt_date_jour']."' ";
			if(!emptyString($_POST['ajt_quantite'])){
				$query_creation_semis .= ", ".$_POST['ajt_quantite']." ";
			}else{
				$query_creation_semis .= ", NULL ";
			}
			$query_creation_semis .= ", ".mysqlString($_POST['ajt_ref'])." ";
			$query_creation_semis .= ") ";
			
			$result_creation_semis = mysql_query($query_creation_semis, $connexion) or logError("CREATION SEMIS-".$query_creation_semis."-".mysql_error());
			
			if($result_creation_semis === true){
			
				$idSemis = valueMax("CODESEMIS", "semis", $connexion);
				
				// Création de l'entrée du semis
				$query_creation_entree = "INSERT INTO entree(CODEVISITEDANSNATURE, CODETYPEENTREEDIVERSE, CODESACHETGRAINE, CODESEMIS, CODETOUFFE, CODEPERSONNE, CODELIGNELIVRAISON, CODEPRETSORTANT, CODEPRETENTRANT, CODESTRUCTURE, SAC_CODESACHETGRAINE, TOU_CODETOUFFE, SEM_CODESEMIS, NUMIPEN, DATEENTREE, NUMENTREE) ";
				$query_creation_entree .= "VALUES(NULL , NULL , ".$_GET['id']." , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , ".$idSemis." , ".mysqlString($ipenSachet)." , '".$_POST['ajt_date_annee']."-".$_POST['ajt_date_mois']."-".$_POST['ajt_date_jour']."' ";
				if(!emptyString($_POST['ajt_numero'])){
					$query_creation_entree .= ", ".$_POST['ajt_numero']." ";
				}else{
					$query_creation_entree .= ", NULL ";
				}
				$query_creation_entree .= ") ";
				
				$result_creation_entree = mysql_query($query_creation_entree, $connexion) or logError("CREATION ENTREE-".$query_creation_entree."-".mysql_error());
				
				if($result_creation_entree === false){
				
					$statut[] = "Erreur critique lors de la création de l'entrée du semis";
					$erreur = true;
					
					// Supression du semis nouvellement créé
					$query_suppression_semis = "DELETE FROM semis WHERE CODESEMIS = ".$idSemis;
					$result_suppression_semis = mysql_query($query_suppression_semis, $connexion) or logError("SUPPRESSION SEMIS-".$query_suppression_semis."-".mysql_error());
					
				}
				
			}else{
				$statut[] = "Erreur critique lors de la création du semis";
				$erreur = true;
			}
		
			if(!$erreur){
				$statut[] = "La plantation des graines en semis a été effectuée - redirection dans 2 sec...";
				logAction("SEMIS (id: ".$idSemis.") AJOUTE par ".capitalise($GLOBALS['USER']['prenom'])." ".mb_strtoupper($GLOBALS['USER']['nom'])." (".$GLOBALS['USER']['login'].")");
			}
		
		}
		
	}
?>
<?php
//------------------------------------------------------------ Affichage du statut si le formulaire a été envoyé

	if(isset($_POST['form_sent'])){ // si le formulaire est envoyé
		
		if($erreur){
			afficherStatut($statut, 3); // appel à la fonction afficherStatut() définie dans fonctions.php
		}else{
			afficherStatut($statut, 1); // appel à la fonction afficherStatut() définie dans fonctions.php
			redirection("gestion/sachetgraines_gere", 2); // appel à la fonction redirection() définie dans fonctions.php
		}
	
	}

?>
<?php
	boutonRetour("index.php?p=gestion/sachetgraines_gere"); // // appel à la fonction boutonRetour() définie dans fonctions.php
?>
<form method="post" action="index.php?p=gestion/sachetgraines_plante&amp;id=<?php echo $_GET['id']; ?>">
	<table class="formulaire" style="margin-left: auto; margin-right: auto;">
		<tr>
			<th class="titre" colspan="2">Plantation de graines en semis</th>
		</tr>
		<tr>
			<th class="sous_titre" colspan="2">informations de l'entrée</th>
		</tr>
		<tr>
			<td class="etiquette">ID :</td>
			<td class="champ"><input type="text" name="ajt_numero" size="25" value="<?php echo $dv_numero; ?>" /></td>
		</tr>
		<tr>
			<th class="sous_titre" colspan="2">informations du semis</th>
		</tr>
		<tr>
			<td style="width: 150px" class="etiquette">N° entrée :</td>
			<td style="width: 320px" class="champ"><input type="text" name="ajt_ref" size="10" value="<?php echo htmlentities($dv_ref, ENT_COMPAT, "UTF-8"); ?>" /></td>
		</tr>
		<tr>
			<td class="etiquette">Date plantation * :</td>
			<td class="champ">
				<select name="ajt_date_jour">
					<?php
						for($i=1; $i<=31; $i++){
							if($dv_date_jour == $i){
								echo "<option value=\"".$i."\" selected=\"selected\">".$i."</option>";
							}else{
								echo "<option value=\"".$i."\">".$i."</option>";
							}
						}
					?>
				</select>
				<select name="ajt_date_mois">
					<option value="1" <?php if($dv_date_mois == 1) echo "selected=\"selected\""; ?>>Janvier</option>
					<option value="2" <?php if($dv_date_mois == 2) echo "selected=\"selected\""; ?>>Février</option>
					<option value="3" <?php if($dv_date_mois == 3) echo "selected=\"selected\""; ?>>Mars</option>
					<option value="4" <?php if($dv_date_mois == 4) echo "selected=\"selected\""; ?>>Avril</option>
					<option value="5" <?php if($dv_date_mois == 5) echo "selected=\"selected\""; ?>>Mai</option>
					<option value="6" <?php if($dv_date_mois == 6) echo "selected=\"selected\""; ?>>Juin</option>
					<option value="7" <?php if($dv_date_mois == 7) echo "selected=\"selected\""; ?>>Juillet</option>
					<option value="8" <?php if($dv_date_mois == 8) echo "selected=\"selected\""; ?>>Aout</option>
					<option value="9" <?php if($dv_date_mois == 9) echo "selected=\"selected\""; ?>>Septembre</option>
					<option value="10" <?php if($dv_date_mois == 10) echo "selected=\"selected\""; ?>>Octobre</option>
					<option value="11" <?php if($dv_date_mois == 11) echo "selected=\"selected\""; ?>>Novembre</option>
					<option value="12" <?php if($dv_date_mois == 12) echo "selected=\"selected\""; ?>>Décembre</option>
				</select>
				<input type="text" name="ajt_date_annee" size="4" value="<?php echo htmlentities($dv_date_annee, ENT_COMPAT, "UTF-8"); ?>" />
			</td>
		</tr>
		<tr>
			<td class="etiquette">Quantité de graines :</td>
			<td class="champ">
				<input type="text" name="ajt_quantite" size="5" value="<?php echo $dv_quantite; ?>" onchange="document.getElementById('ajt_vide_non').checked=true;" />
				<?php
					if(!is_null($quantiteSachet)){
						echo "(".$quantiteSachet." graine(s) dans le sachet)";
					}
				?>
			</td>
		</tr>
		<tr>
			<th class="sous_titre" colspan="2">informations du sachet</th>
		</tr>
		<tr>
			<td class="etiquette">Sachet vide * :</td>
			<td class="champ"><input type="radio" name="ajt_vide" value="oui" <?php if($dv_vide) echo "checked=\"checked\""; ?> /><label>Oui</label> <input type="radio" name="ajt_vide" id="ajt_vide_non" value="non" <?php if(!$dv_vide) echo "checked=\"checked\""; ?> /><label>Non</label></td>
		</tr>
		<tr>
			<td class="envoi" colspan="2"><input type="submit" value="Planter" /><input type="hidden" name="form_sent" value="1" /></td>
		</tr>
		<tr>
			<td class="legende" colspan="2">* = champs obligatoires</td>
		</tr>
	</table>
</form>
<div class="information">
	<div class="titre">Informations</div>
	<h4>Identifiant (ID) d'entrée :</h4>
	<p>Identifiant automatiquement attribué à l'entrée.</p>
	<h4>Numéro d'entrée :</h4>
	<p>Indiquez le numéro d'entrée du végétal qui le suivra au cours de son utilisation au Jardin Botanique.</p>
	<h4>Quantité de graines :</h4>
	<p>Indiquez la quantité de graines du sachet qui ont été plantées dans le semis.</p>
</div>
<?php
//------------------------------------------------------------ Accès refusé à la page

						}else{
							afficherStatut("Le sachet de graines est emprunté", 3); // appel à la fonction afficherStatut() définie dans fonctions.php
						}

					}else{
						afficherStatut("Le sachet de graines n'est pas disponible", 3); // appel à la fonction afficherStatut() définie dans fonctions.php
					}

				}else{
					afficherStatut("Le sachet de graines est vide", 3); // appel à la fonction afficherStatut() définie dans fonctions.php
				}

				mysql_free_result($result_recuperation_sachet_graines);

			}else{
				afficherStatut("Le sachet de graines à planter n'existe pas", 3); // appel à la fonction afficherStatut() définie dans fonctions.php
			}

		}else{
			afficherStatut("Le sachet de graines à planter n'est pas ou mal indiqué", 3); // appel à la fonction afficherStatut() définie dans fonctions.php
		}

	}else{
		if(isset($_SESSION)){
			if(!isset($_SESSION['user_id'])){ // si l'utilisateur n'est pas connecté
				include("pages/connexion.php");
			}else{ // si l'utilisateur est connecté et qu'il n'a pas accès à la page, c'est qu'il n'a pas le droit d'utilisation nécessaire
				include("pages/401.htm");
			}
		}
	}

?>